/**
 * 环境配置管理
 * 
 * 职责：
 * 1. 区分开发环境和生产环境
 * 2. 根据环境自动切换配置
 * 3. 支持自定义环境变量覆盖
 * 
 * @author AI Assistant
 * @date 2025-11-27
 */

import { EDITOR, PREVIEW, DEBUG } from 'cc/env';
import { LogLevel } from '../core/logger/Logger';

/**
 * 环境类型
 */
export enum Environment {
    /** 开发环境（编辑器内）*/
    DEVELOPMENT = 'development',
    /** 预览环境（本地预览）*/
    PREVIEW = 'preview',
    /** 生产环境（发布版本）*/
    PRODUCTION = 'production'
}

/**
 * 获取当前环境
 */
export function getCurrentEnvironment(): Environment {
    if (EDITOR) {
        return Environment.DEVELOPMENT;
    }
    if (PREVIEW || DEBUG) {
        return Environment.PREVIEW;
    }
    return Environment.PRODUCTION;
}

/**
 * 环境特定配置
 */
export const EnvironmentConfig = {
    /** 开发环境配置 */
    [Environment.DEVELOPMENT]: {
        // 日志配置
        logLevel: LogLevel.DEBUG,
        enableColor: true,
        enableStackTrace: true,
        
        // 性能配置
        enablePerformanceStats: true,
        showFPS: true,
        
        // 调试配置
        enableDebug: true,
        enableGM: true,
        enableHotReload: true,
        
        // 网络配置
        serverUrl: 'ws://localhost:8080',
        
        // 资源配置
        enablePreload: false, // 开发环境不预加载，快速启动
    },
    
    /** 预览环境配置 */
    [Environment.PREVIEW]: {
        // 日志配置
        logLevel: LogLevel.INFO,
        enableColor: true,
        enableStackTrace: true,
        
        // 性能配置
        enablePerformanceStats: true,
        showFPS: true,
        
        // 调试配置
        enableDebug: true,
        enableGM: false,
        enableHotReload: false,
        
        // 网络配置
        serverUrl: 'ws://test.example.com:8080',
        
        // 资源配置
        enablePreload: true,
    },
    
    /** 生产环境配置 */
    [Environment.PRODUCTION]: {
        // 日志配置
        logLevel: LogLevel.WARN,
        enableColor: false,
        enableStackTrace: false,
        
        // 性能配置
        enablePerformanceStats: false,
        showFPS: false,
        
        // 调试配置
        enableDebug: false,
        enableGM: false,
        enableHotReload: false,
        
        // 网络配置
        serverUrl: 'wss://prod.example.com:443',
        
        // 资源配置
        enablePreload: true,
    }
} as const;

/**
 * 获取当前环境配置
 */
export function getEnvironmentConfig() {
    const env = getCurrentEnvironment();
    return EnvironmentConfig[env];
}

/**
 * 检查是否为开发环境
 */
export function isDevelopment(): boolean {
    return getCurrentEnvironment() === Environment.DEVELOPMENT;
}

/**
 * 检查是否为生产环境
 */
export function isProduction(): boolean {
    return getCurrentEnvironment() === Environment.PRODUCTION;
}

/**
 * 检查是否为预览环境
 */
export function isPreview(): boolean {
    return getCurrentEnvironment() === Environment.PREVIEW;
}

/**
 * 使用示例：
 * 
 * ```typescript
 * import { getEnvironmentConfig, isDevelopment } from '../config/EnvironmentConfig';
 * 
 * // 获取环境配置
 * const envConfig = getEnvironmentConfig();
 * logger.setLevel(envConfig.logLevel);
 * 
 * // 环境判断
 * if (isDevelopment()) {
 *     console.log('开发环境，启用调试功能');
 * }
 * ```
 */

